package com.aisino.util;

import java.math.BigDecimal;

import org.apache.commons.lang.StringUtils;


public class CalculateUtil {
	
	public static final int SCALE = 2;
	public static final int SCALEDJ = 6;
	
	public static BigDecimal changeSlv(BigDecimal slv) {
		if(slv.compareTo(new BigDecimal(1)) == 1) {
			//税率大于1,即税率传入为整数
			return slv.divide(new BigDecimal(100), CalculateUtil.SCALE, BigDecimal.ROUND_HALF_UP);
		} else {
			return slv.setScale(CalculateUtil.SCALE, BigDecimal.ROUND_HALF_UP);
		}
	}
	
	/**
	 * 
	 * @Title: changeJe
	 * @Description: 根据含税标志1,传入含税金额返回不含税金额,含税标志0,传入不含税金额返回含税金额
	 * @author 曹梦媛
	 * @date 2018年3月16日 上午10:03:17
	 * @param: @param je
	 * @param: @param slv 0.17等小数税率
	 * @param: @param hsbz
	 * @param: @return 
	 * @return: BigDecimal   
	 * @throws
	 */
	public static BigDecimal changeJe(BigDecimal je, BigDecimal slv, String hsbz) {
		if("1".equals(hsbz)) {
			//含税金额转不含税金额
			return je.divide(slv.add(new BigDecimal(1)), CalculateUtil.SCALE, BigDecimal.ROUND_HALF_UP);
		} else {
			//不含税金额转含税金额
			return je.multiply(slv.add(new BigDecimal(1))).setScale(CalculateUtil.SCALE, BigDecimal.ROUND_HALF_UP);
		}
	}
	public static BigDecimal changeJe(BigDecimal je, BigDecimal slv, String hsbz, int scale) {
		if("1".equals(hsbz)) {
			//含税金额转不含税金额
			return je.divide(slv.add(new BigDecimal(1)), scale, BigDecimal.ROUND_HALF_UP);
		} else {
			//不含税金额转含税金额
			return je.multiply(slv.add(new BigDecimal(1))).setScale(scale, BigDecimal.ROUND_HALF_UP);
		}
	}
	
	/**
	 * 
	 * @Title: calculateSe
	 * @Description: 计算税额
	 * @author 曹梦媛
	 * @date 2018年3月16日 上午10:25:54
	 * @param: @param je
	 * @param: @param slv
	 * @param: @param hsbz
	 * @param: @return 
	 * @return: BigDecimal   
	 * @throws
	 */
	public static BigDecimal calculateSe(BigDecimal je, BigDecimal slv, String hsbz) {
		if("1".equals(hsbz)) {
			//含税金额计算税额
			return (je.divide(slv.add(new BigDecimal(1)), BigDecimal.ROUND_HALF_UP, SCALEDJ)).multiply(slv).setScale(CalculateUtil.SCALE, BigDecimal.ROUND_HALF_UP);
		} else {
			//不含税金额
			return je.multiply(slv).setScale(CalculateUtil.SCALE, BigDecimal.ROUND_HALF_UP);
		}
	}

	/**
	 * 
	 * @Title: setAccuracy
	 * @Description: 设置精度
	 * @author 曹梦媛
	 * @date 2018年5月30日 下午2:16:37
	 * @param: @param num
	 * @param: @param scale
	 * @param: @return 
	 * @return: BigDecimal   
	 * @throws
	 */
	public static BigDecimal setAccuracy(String  num, int scale) {
		return new BigDecimal(num).setScale(scale, BigDecimal.ROUND_HALF_UP);
	}
	
	/**
	 * 
	 * @Title: setSsflbm
	 * @Description: 处理税收分类编码, 不足位右补0
	 * @author 曹梦媛
	 * @date 2018年6月20日 上午9:35:09
	 * @param: @param ssflbm 处理前税收分类编码
	 * @param: @param length 需要的长度
	 * @param: @return 
	 * @return: String   处理后的税收分类编码
	 * @throws
	 */
	public static String setSsflbm(String ssflbm, int length) {
		if (ssflbm != null) {
			return StringUtils.rightPad(ssflbm, length, "0").substring(0, length);
		} else {
			return "";
		}
	}
	
	public static void main(String[] args) {
		String ssflbm = "3020100000012255555555";
		System.out.println("处理前:"+ssflbm.length()+":"+ssflbm);
		ssflbm = StringUtils.rightPad(ssflbm, 19, "0").substring(0, 19);
		System.out.println("处理后:"+ssflbm.length()+":"+ssflbm);
		
	}
}
